Verifying Declarative Netlog Protocols with Coq: a First Experiment
نویسندگان
چکیده
Declarative languages, such as recursive rule based languages, have been proposed to program distributed applications over networks. It has been shown that they simplify greatly the code, while still o ering e cient distributed execution. In this report, we show that moreover they provide a promising approach to the veri cation of distributed protocols. We consider the Netlog language and use the Coq proof assistant. We rst formalize the distributed computation model based on message passing with either synchronous or asynchronous behavior. We then see how the declarative rules of the protocols can be simply encoded in Coq and we develop the machine embedded on each node of the network which evaluates the rules. This framework enables us to formally verify distributed protocols, as shown on a concrete case study, a spanning tree construction in both the asynchronous and synchronous setting. Key-words: formal proof, protocol, distributed algorithm, distributed computation model. ∗ BASICS, Shanghai Jiao Tong University, China † LIAMA-INRIA, Netquest ‡ LIAMA-CNRS et Université Joseph Fourier Grenoble 1, FORMES Véri cation de protocoles déclaratifs en Coq: une première expérience Résumé : L'idée d'utiliser des langages déclaratifs, par exemple à base de règles récursives, a été proposée pour programmer des applications distribuées sur des réseaux. Il a été montré que cela simpli e grandement le code, sans sacri er l'e cacité de l'exécution distribuée. Dans ce rapport, nous montrons qu'en outre ils constituent une approche prometteuse à la véri cation de protocoles. Nous considérons le langage Netlog et utilisons l'assistant à la preuve Coq. Nous commençons par formaliser le modèle de calcul distribué par communication de message dans les deux variantes synchrone et asynchrone. Nous montrons ensuite un encodage simple en Coq des règles dé nissant un protocole et ainsi que de leur évaluation sur chaque n÷ud du réseau. Ce cadre permet de véri er formellement des protocoles distribués, comme illustré sur une étude de cas concrète, la construction d'un arbre, tant dans le cas synchrone que dans le cas asynchrone. Mots-clés : preuve formelle, protocole, algorithme distribué, modèle de calcul distribué. Verifying Declarative Netlog Protocols with Coq 3
منابع مشابه
A Framework for Verifying Data-Centric Protocols
Data centric languages, such as recursive rule based languages, have been proposed to program distributed applications over networks. They simplify greatly the code, while still admitting efficient distributed execution. We show that they also provide a promising approach to the verification of distributed protocols, thanks to their data centric orientation, which allows us to explicitly handle...
متن کاملNetlog, a Rule-Based Language for Distributed Programming
We propose a rule-based language, Netlog, to express distributed applications such as communication protocols or P2P applications in a declarative manner. The language extends Datalog with communication primitives, as well as aggregation and non-deterministic constructs, standard in network applications. Our contribution is twofold. First we define a sound distributed fixpoint semantics, which ...
متن کاملA Program Logic for Verifying Secure Routing Protocols
The Internet, as it stands today, is highly vulnerable to attacks. However, little has been done to understand and verify the formal security guarantees of proposed secure inter-domain routing protocols, such as Secure BGP (S-BGP). In this paper, we develop a sound program logic for SANDLog—a declarative specification language for secure routing protocols—for verifying properties of these proto...
متن کاملFormal Veriication of Microprocessors: a Rst Experiment with the Coq Proof Assistant
We propose in this paper a study of the Coq proof assistant for formally verifying microprocessors. We show that interactive proofs with Coq are only required to verify complex instructions of microprocessors. We give our speciication and veriication methodology and some details about the word library developed in Coq. Two full examples show additional speciication and veriication aspects. We a...
متن کاملCoqIOA: A Formalization of IO Automata in the Coq Proof Assistant
Implementing distributed systems correctly is difficult. Designing correct distributed systems protocols is challenging because designs must account for concurrent operation and handle network and machine failures. Implementing these protocols is challenging as well: it is difficult to avoid subtle bugs in implementations of complex protocols. Formal verification is a promising approach to ensu...
متن کامل